package com.sye.threadmodule.threadpool;

import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.TimeUnit;

/**
 * 启动5s后第一次运行，以后每隔1s运行一次。
 * newFixedThreadPool()方法:该方法返回固定数量的线程池，该方法的线程数始终不变，当有一个任务提交
 * 	                          时，若线程池空闲，则立即执行，若没有，则会暂缓在一个任务队列中等待有空闲的
 * 							  线程去执行。
 *  newSingleThreadPool()方法:创建一个线程的线程池，若线程空闲则执行，否则暂缓在任务队列中。
 * 	newCachedThreadPool():可以根据实际情况调整线程个数的线程池，不限制最大的线程数量，若用空闲的线程则
 * 	                      执行任务，若无任务则不创建线程，并且每一个空线程会在60秒后回收。
 * 	newSheduledThreadPool():该方法返回一个ScheduledExecutorService对象，可以指定线程的数量
 */
class Temp extends Thread {
    public void run() {
        System.out.println("run");
    }
}

public class ScheduledJob {
	
    public static void main(String args[]) throws Exception {
    
    	Temp command = new Temp();
        ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
        
        ScheduledFuture<?> scheduleTask = scheduler.scheduleWithFixedDelay(command, 5, 1, TimeUnit.SECONDS);
    
    }
}